package com.haierp.service;

import java.util.List;

import com.baomidou.framework.service.ISuperService;
import com.haierp.exception.InventoryException;
import com.haierp.model.ErpOrder;
import com.haierp.model.sale.OuterOrder;
import com.haierp.model.sale.OuterOrderDetail;
import com.haierp.util.BizResult;
import com.haierp.util.JsonPageResult;
import com.haierp.vo.ErpOrderQueryVO;

public interface IErpOrderService extends ISuperService<ErpOrder> {

	/**
	 * 外部订单到入内部订单
	 * 
	 * @param order
	 */
	void importOuterOrder(OuterOrder order);

	JsonPageResult<List<ErpOrder>> queryErpOrders(ErpOrderQueryVO erpOrderQueryVO);

	void reviewOuterOrder(Long orderId,String type);
	
	/**
	 * 状态：审核通过
	 * 备货状态：未备货 or 部分备货
	 *  
	 * @return
	 */
	List<ErpOrder> queryUnStockUpErpOrders(Long skuId);
	
	/**
	 * 关闭子订单
	 * @return
	 */
	void  closeErpOrder(ErpOrder erpOrder) throws InventoryException;

    List<ErpOrder> queryTransStockUpErpOrders(Long skuId);

    BizResult lockErpOrder(ErpOrder erpOrder) throws InventoryException;
	
	/**
	 * 拆分订单
	 * @param erpOrder
	 * @param splitCount
	 * @throws InventoryException
	 */
	public void splitErpOrder(ErpOrder erpOrder,int splitCount) throws InventoryException;

	void lockErpOrderBySkuId(Long skuId) throws InventoryException;

	List<ErpOrder> queryErpOrderForExcel(ErpOrderQueryVO erpOrderQueryVO);

	void updateUpcForOrder(ErpOrder erpOrder);

	void updateWeightForOrder(ErpOrder erpOrder);
	
	List<ErpOrder> queryHaihuShippingNO(String targetNo,String skuCode);

	ErpOrder queryHaihuErpOrders(OuterOrderDetail outerOrderDetail);
	
	public void splithaihuErpOrder(String outerOrderDetailList,String tragetNO)throws InventoryException;
	
	JsonPageResult<List<ErpOrder>>  queryOrderNoStockSku(ErpOrderQueryVO erpOrderQueryVO);
	
	public void updateShippingTimeLaterOrder();
	
	public void updateErpIdCard(String targNo,String idCard);
		
	List<ErpOrder> inventoryYzCount(ErpOrderQueryVO erpOrderQueryVO);
}
